<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    /* 
    原型的作用：
        1、节省内存空间
        2、实现数据共享
    */
   /* 
   构造函数、实例、原型三者之间的关系***
        1、任何函数（不包括箭头函数）都有prototype属性，它本身是一个对象
        2、构造函数也是函数，也有prototype属性，我们称之为原型
        3、prototype属性上的属性和方法可以被实例化对象所继承
        4、任何对象都有constructor属性，实例化对象的constructor属性指向构造函数
        5、原型也是对象，也有constructor属性，原型constructor属性指向构造函数
        6、实例化对象上面有一个__proto__属性，他是一个指针，指向构造函数的原型
   */
  /* 
  this的指向：
        实例化对象调用原型上面的方法，this指向实例化对象
        构造函数的原型直接调用方法，this指向构造函数的原型
  */

 /* 
 除箭头函数外，其他函数的this指向调用它的地方
 箭头函数指向声明他的地方
 */
</script>
<script>
    function fn(){
        console.log(this);
    }
    fn()
    console.dir(fn);
    console.log(fn.prototype);
</script>
<script>
    function Car(name){
        this.name = name
    }
    console.log(Car.prototype);
    Car.prototype.color = 'red'
    console.log(Car.color);
    Car.prototype.play = function(){
        console.log(this);
    }
    Car.prototype.play()
    console.log(Car.prototype);
    console.log(Car.prototype.constructor);
</script>
<script>
    var obj ={
        name:'zs',
        getName(){
            console.log(this);
        }
    }
    obj.getName()
</script>
</html>